home *** CD-ROM | disk | FTP | other *** search
- =======================================
- 【作 品 名】 HAPPy Pascal サンプルプログラム集3
- 【作 者】 浅野比富美 (NIFTY-Serve GFA01713)
- 【動作環境】 HAPPyでコンパイル・実行
- =======================================
-
- ☆ はじめに
-
- 標準Pascal処理系HAPPy上で動くPascalのサンプルプログラム
- の第3集です。以下の3種類のプログラムを収録しました。
- ・ 三目並べ (3MOKU .PAS)
- ・ 電卓 (CALC .PAS)
- ・ Pascalステップカウントツール (SCNT .PAS)
-
- 各ソースファイルをpcコマンドでコンパイルし、piコマンドで実行させてみ
- てください。
- 例えば、電卓を動かしたい時は
- pc calc
- でコンパイル後
- pi calc
- でインタプリタを起動します(Version 0.3 の場合)。
-
-
- ☆ 三目並べ
-
- 小学生のころ、棒切れで地面に井げたの線を引いて、○と×を3つずつ並べる遊び
- を友達としませんでしたか。教室でノートの端にもたくさん書いて遊んだような記憶
- があります。
- 小学生には適当な、そして大人には全然つまらない○×を3つ並べる遊び、三目並
- べをプログラムしてみました。
- 先攻(○)、後攻(×)が選べるようになっています。
- ○×を入れる場所は、1~9の数字で選びます。この時、0を入力すると、どこに
- 置いたら良いか、コンピュータがアドバイスしてくれます。
- 9手目は無意味なので、このプログラムでは9手目を行いません。
- なお、三目並べは、理論上双方が最善を尽くせば必ず引き分けになるゲームです。
- コンピュータは最善を尽くしますから、絶対に負けません。あなたがうかうかしてい
- ると、あなたは負けてしまいます。だからゲームとしてはつまらないでしょう。
- しかし、三目並べは思考対戦型ゲームの基礎なので、プログラムを勉強している方
- には、アルゴリズム等、参考になるのではないかと思っています。
-
-
- ☆ 電卓
-
- 括弧記法ができる四則演算電卓です。
- この電卓には、2つの特徴があります。1つは、整数演算オーバーフロー時に、
- 以後の演算を実数演算とする機能、もう1つは、直前の演算結果をXという変数で
- 参照できる機能です。
- 99999999を越える数や演算結果、及び少数点のつく数は、実数として扱
- い、実数演算を行います。式の中に、1つでも実数があると、その式の演算結果は
- 実数となります。ただし、除算は、すべて実数演算です。
- 実数演算の答えは、Pascalの実数のwriteの形式となります。つまり
- 正規化された浮動小数点形式なので、見慣れないうちは、わかりにくいかもしれま
- せん。
- 電卓を起動すると、# というプロンプトが現れます。この状態で数式を入力し
- ます。数式の最後は=で終わってください(ちょっと面倒ですね)。そして改行キ
- ーを押すと、答えが出力され、また#の状態に戻ります。
- 直前の式の演算結果は、Xまたはxという変数で参照できます。この機能はとて
- も便利ですよ。
- 電卓をやめたい時は、#の状態で、Qまたはqを入力してください。
-
- 使用例を以下に示します。
-
- H:\> pi calc
- # 5+3=
- 8
- # (1+10)*-5=
- -55
- # 3*x=
- -165
- # -x/5=
- -3.300000E+001
- # (1+10)*5.0=
- 5.500000E+001
- # 1000*1001*1002*1003=
- 1.006011E+012
- # 2/1=
- 1.000000E+000
- # q
-
-
- ☆ Pascalステップカウントツール
-
- Pascalソースの行数とステップ数を数えるツールです。
- ステップ数の正式な定義がどうなっているのか、私は知りませんが、ここではご
- く簡単な方法で数えています。すなわち、「コメント、空白、水平タブのみからな
- る行を除いた行数」をステップ数だ、と定義します。
- 例えば、次のようなプログラムでは、行数は7、ステップ数は4となります。
- (***** SAMPLE ****)
- program sample(output) ; (*1*)
- begin (*2*)
- (* 出力 *)
- write('step count') (*3*)
-
- end. (*4*)
-
- 一般的に、それ自体何の動作も起こさないbeginやendは、独立した1行
- に書かれます。それらも1ステップとして数えることになります。しかし人によっ
- てはbeginを1行単独に書かず、前の行につける場合があり、同じ動作をする
- にもかかわらず、ステップ数が減ることになります。このあたりが、何をもってス
- テップ数とするのか、議論の余地のあるところてす。
-
- なお、このプログラムは、Version 0.0~0.2では、in演算子のバグのため、正しく
- 動きません。Version 0.3以降で動かしてください。
-
-
- ☆ おわりに
-
- Pascalは、もともと教育用言語なので、これらサンプルプログラムについ
- ては著作権を主張しません。PDSとします。したがって、どのように使ってもど
- こに流布させても自由です。
- HAPPyでは、大きなプログラムとか、グラフィックプログラムとか、マウス
- を使うとか、そういう系統のプログラムは作れませんが、プログラミングの基礎を
- 勉強するためのちょっとしたプログラムなら充分作れます。HAPPyを通して、
- Pascalプログラムに親しんでいただければ、幸いです。是非いろいろと挑戦
- してみてください。
-
- 浅野比富美 (NIFTY-Serve GFA01713)